# 最低CMake版本要求（与主目录一致）
cmake_minimum_required(VERSION 3.10)
# 子项目名称（自定义，仅标识lib模块）
project(APUE_Lib LANGUAGES C)

# -------------------------- 基础配置 --------------------------
# 1. 继承主目录的C标准（无需重复设置，但可显式声明）
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)

# 2. 包含头文件目录（lib下的源文件需引用 include/apue.h）
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../include)


# -------------------------- 列出lib所有源文件 --------------------------
# 需确保包含 lib/ 下所有 .c 文件（根据你的文件结构逐一枚举，无遗漏）
set(LIB_APUE_SOURCES
    bufargs.c
    cliconn.c
    clrfl.c
    daemonize.c
    error.c
    errorlog.c
    lockreg.c
    locktest.c
    nspipe.c
    openmax.c
    Orecvfd.c
    pathalloc.c
    popen.c
    prexit.c
    prmask.c
    ptyfork.c
    ptyopen.c
    readn.c
    recvfd.c
    semaph.c
    senderr.c
    sendfd.c
    servaccept.c
    servlisten.c
    setfd.c
    setfl.c
    signal.c
    signalintr.c
    sleep.c
    sleepus.c
    spipe.c
    strerror.c
    tellwait.c
    ttymodes.c
    writen.c
)


# -------------------------- 生成静态库 --------------------------
# add_library(库名 类型 源文件列表)：STATIC表示生成静态库（.a文件）
add_library(apue STATIC ${LIB_APUE_SOURCES})

# （可选）强制静态库输出到 build/lib/（与主目录配置一致，确保链接时能找到）
set_target_properties(apue PROPERTIES
    ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib
)